Протокол Деннинг — Сакко
[math]\displaystyle{ A }[/math] | Идентификаторы Алисы (Alice), инициатора сессии |
[math]\displaystyle{ B }[/math] | Идентификатор Боба (Bob), стороны, с которой устанавливается сессия |
[math]\displaystyle{ T }[/math] | Идентификатор Трента (Trent), доверенной промежуточной стороны |
[math]\displaystyle{ K_A, K_B, K_T }[/math] | Открытые ключи Алисы, Боба и Трента |
[math]\displaystyle{ K_A^{-1}, K_B^{-1}, K_T^{-1} }[/math] | Секретные ключи Алисы, Боба и Трента |
[math]\displaystyle{ E_A, \left\{...\right\}_{K_A} }[/math] | Шифрование данных ключом Алисы, либо совместным ключом Алисы и Трента |
[math]\displaystyle{ E_B, \left\{...\right\}_{K_B} }[/math] | Шифрование данных ключом Боба, либо совместным ключом Боба и Трента |
[math]\displaystyle{ \left\{...\right\}_{K_B^{-1}}, \left\{...\right\}_{K_A^{-1}} }[/math] | Шифрование данных секретными ключами Алисы, Боба (цифровая подпись) |
[math]\displaystyle{ I }[/math] | Порядковый номер сессии (для предотвращения атаки с повтором) |
[math]\displaystyle{ K }[/math] | Случайный сеансовый ключ, который будет использоваться для симметричного шифрования данных |
[math]\displaystyle{ E_K, \left\{...\right\}_{K} }[/math] | Шифрование данных временным сеансовым ключом |
[math]\displaystyle{ T_A, T_B }[/math] | Метки времени, добавляемые в сообщения Алисой и Бобом соответственно |
[math]\displaystyle{ R_A, R_B }[/math] | Случайные числа (nonce), которые были выбраны Алисой и Бобом соответственно |
[math]\displaystyle{ K_A, K_B, K_T }[/math] | Заранее созданные пары открытых и закрытых ключей Алисы, Боба и Трента соответственно |
[math]\displaystyle{ K_p }[/math] | Случайная сеансовая пара открытого и закрытого ключей, которая будет использоваться для асимметричного шифрования |
[math]\displaystyle{ S_A, S_B, }[/math][math]\displaystyle{ S_T, S_{K_p} }[/math] | Подписывание данных с использованием закрытого ключа Алисы, Боба, промежуточной стороны (Trent) или закрытого ключа из случайной пары соответственно |
[math]\displaystyle{ E_{K_A}, E_{K_B}, }[/math][math]\displaystyle{ E_{K_T}, E_{K_p} }[/math] | Асимметричное шифрование данных с использованием открытого ключа Алисы, Боба, промежуточной стороны (Trent) или открытого ключа из случайной пары соответственно |
Протокол Деннинг — Сакко[1] — общее название для симметричного и асимметричного протоколов распространения ключей с использованием доверенной стороны.
История
В 1981 году сотрудники университета Пердью (англ. Purdue University) Дороти Деннинг (англ. Dorothy E. Denning) и Джованни Мария Сакко (англ. Giovanni Maria Sacco) представили атаку на протокол Нидхема — Шрёдера и предложили свою модификацию протокола, основанную на использовании временны́х меток[2].
Протокол Деннинг — Сакко с симметричным ключом
При симметричном шифровании предполагается, что секретный ключ, принадлежащий клиенту, известен только ему и некоторой третьей доверенной стороне — серверу аутентификации. В ходе выполнения протокола клиенты (Алиса, Боб) получают от сервера аутентификации (Трент) новый секретный сессионный ключ для шифрования взаимных сообщений в текущем сеансе связи. Рассмотрим реализацию протокола Деннинг — Сакко с симметричным ключом[3]:
- [math]\displaystyle{ Alice \to \left\{ A, B \right\} \to Trent }[/math]
- [math]\displaystyle{ Trent \to \left\{ B, K, T_T, \left\{ A, K, T_T \right\}_{K_B} \right\}_{K_A} \to Alice }[/math]
- [math]\displaystyle{ Alice \to \left\{ A, K, T_T \right\}_{K_B} \to Bob }[/math]
Описание
Первое сообщение от Алисы к Тренту содержит в себе идентификаторы участников предстоящего обмена — Алисы и Боба. Данное сообщение посылается открытым текстом:
[math]\displaystyle{ Alice \to \left\{ A, B \right\} \to Trent }[/math]
Трент генерирует сессионный ключ [math]\displaystyle{ K }[/math] и отправляет Алисе зашифрованное сообщение, которое включает в себя идентификатор Боба, сессионный ключ, метку времени и пакет [math]\displaystyle{ \left\{ A, K, T_T \right\}_{K_B} }[/math], выполняющий роль сертификата Алисы:
[math]\displaystyle{ Trent \to \left\{ B, K, T_T, \left\{ A, K, T_T \right\}_{K_B} \right\}_{K_A} \to Alice }[/math]
Затем Алиса расшифровывает сообщение Трента и отправляет Бобу свой сертификат [math]\displaystyle{ \left\{ A, K, T_T \right\}_{K_B} }[/math]:
[math]\displaystyle{ Alice \to \left\{ A, K, T_T \right\}_{K_B} \to Bob }[/math]
По окончании протокола у Алисы и Боба есть общий сеансовый ключ [math]\displaystyle{ K }[/math].
Алиса и Боб могут убедиться в том, что полученные ими сообщения валидные, с помощью проверки меток времени [math]\displaystyle{ T_T }[/math].
Атака на протокол
В 1997 году Гэвин Лоу (англ. Gavin Lowe) представил атаку на протокол[4]:
- Алиса и Боб завершают сеанс протокола, в результате чего у сторон вырабатывается сессионный ключ [math]\displaystyle{ K }[/math]:
- 1. [math]\displaystyle{ Alice \to \left\{ A, B \right\} \to Trent }[/math]
- 2. [math]\displaystyle{ Trent \to \left\{ B, K, T_T, \left\{ A, K, T_T \right\}_{K_B} \right\}_{K_A} \to Alice }[/math]
- 3. [math]\displaystyle{ Alice \to \left\{ A, K, T_T \right\}_{K_B} \to Bob }[/math]
- Далее злоумышленник повторяет последнее сообщение Алисы:
- 4. [math]\displaystyle{ Attacker \to \left\{ A, K, T_T \right\}_{K_B} \to Bob }[/math]
Действия злоумышленника приводят к тому, что Боб решает, будто Алиса хочет установить с ним новое соединение.
Модификация протокола
В той же работе Лоу предложил модификацию протокола, в которой обеспечивается аутентификация Алисы перед Бобом[4]:
- Сначала Алиса и Боб полностью повторяют сеанс протокола:
- 1. [math]\displaystyle{ Alice \to \left\{ A, B \right\} \to Trent }[/math]
- 2. [math]\displaystyle{ Trent \to \left\{ B, K, T_T, \left\{ A, K, T_T \right\}_{K_B} \right\}_{K_A} \to Alice }[/math]
- 3. [math]\displaystyle{ Alice \to \left\{ A, K, T_T \right\}_{K_B} \to Bob }[/math]
- Затем Боб генерирует случайное число, шифрует его на сессионном ключе [math]\displaystyle{ K }[/math] и отправляет Алисе:
- 4. [math]\displaystyle{ Bob \to \left\{ R_B \right\}_{K} \to Alice }[/math]
- Алиса расшифровывает сообщение Боба, прибавляет к [math]\displaystyle{ R_B }[/math] единицу, шифрует полученный результат на сессионном ключе [math]\displaystyle{ K }[/math] и отправляет Бобу:
- 5. [math]\displaystyle{ Alice \to \left\{ R_B+1 \right\}_{K} \to Bob }[/math]
- После того как Боб расшифрует сообщение Алисы, он сможет проверить факт владения Алисы сессионным ключом [math]\displaystyle{ K }[/math].
В рамках протокола Боб никак не подтверждает получение нового сессионного ключа [math]\displaystyle{ K }[/math] и возможность им оперировать. Сообщение от Алисы на 5-м проходе могло быть перехвачено или изменено злоумышленником. Но никакого ответа Алиса от Боба уже не ожидает и уверена, что протокол завершился успешно.
Протокол Деннинг — Сакко с открытым ключом
Асимметричный вариант протокола Деннинг — Сакко. Сервер аутентификации владеет открытыми ключами всех клиентов. Рассмотрим реализацию протокола Деннинг — Сакко с открытым ключом[5]:
- [math]\displaystyle{ Alice \to \left\{ A, B \right\} \to Trent }[/math]
- [math]\displaystyle{ Trent \to \left\{ S_T \left( A, K_A, T_T \right), S_T \left( B, K_B, T_T \right) \right\} \to Alice }[/math]
- [math]\displaystyle{ Alice \to \left\{ E_B \left( S_A \left( K, T_A \right) \right), S_T \left( A, K_A, T_T \right), S_T \left( B, K_B, T_T \right) \right\} \to Bob }[/math]
Описание
Первое сообщение от Алисы к Тренту содержит в себе идентификаторы участников предстоящего обмена — Алисы и Боба. Данное сообщение посылается открытым текстом:
- [math]\displaystyle{ Alice \to \left\{ A, B \right\} \to Trent }[/math]
В ответ Трент отправляет Алисе подписанные сертификаты открытых ключей Алисы и Боба. Дополнительно в каждый сертификат добавляются временные метки:
- [math]\displaystyle{ Trent \to \left\{ S_T \left( A, K_A, T_T \right), S_T \left( B, K_B, T_T \right) \right\} \to Alice }[/math]
Алиса генерирует новый сессионный ключ [math]\displaystyle{ K }[/math] и отправляет его Бобу вместе с меткой времени [math]\displaystyle{ T_A }[/math], подписав это своим ключом и зашифровав это открытым ключом Боба, вместе с обоими сообщениями, полученными от Трента:
- [math]\displaystyle{ Alice \to \left\{ E_B \left( S_A \left( K, T_A \right) \right), S_T \left( A, K_A, T_T \right), S_T \left( B, K_B, T_T \right) \right\} \to Bob }[/math]
Боб проверяет подпись доверенного центра на сертификате [math]\displaystyle{ S_T \left( A, K_A, T_T \right) }[/math], расшифровывает сессионный ключ [math]\displaystyle{ K }[/math] и проверяет подпись Алисы.
Атака на протокол
Абади и Нидхем описали атаку на протокол[6], в ходе которой Боб, получив сообщение от Алисы, может выдать себя за неё в сеансе с другим пользователем. Отсутствие в сообщении от Алисы [math]\displaystyle{ E_{K_B} \left( S_A \left( K, T_A \right) \right) }[/math] идентификатора Боба приводит к тому, что Боб может использовать принятые от Алисы данные для того, чтобы выдать себя за Алису в новом сеансе с третьей стороной (Кларой).
- Сначала Алиса и Боб проводят стандартный сеанс протокола, выработав новый сессионный ключ [math]\displaystyle{ K }[/math]:
- 1. [math]\displaystyle{ Alice \to \left\{ A, B \right\} \to Trent }[/math]
- 2. [math]\displaystyle{ Trent \to \left\{ S_T \left( A, K_A, T_T \right), S_T \left( B, K_B, T_T \right) \right\} \to Alice }[/math]
- 3. [math]\displaystyle{ Alice \to \left\{ E_B \left( S_A \left( K, T_A \right) \right), S_T \left( A, K_A, T_T \right), S_T \left( B, K_B, T_T \right) \right\} \to Bob }[/math]
- После этого Боб инициирует новый сеанс с Кларой и действует в рамках протокола:
- 4. [math]\displaystyle{ Bob \to \left\{ B, C \right\} \to Trent }[/math]
- 5. [math]\displaystyle{ Trent \to \left\{ S_T \left( B, K_B, T_T \right), S_T \left( C, K_C, T_T \right) \right\} \to Bob }[/math]
- На последнем шаге протокола Боб воспроизводит в сеансе с Кларой сообщения [math]\displaystyle{ S_A \left( K, T_A \right) }[/math] и [math]\displaystyle{ S_T \left( A, K_A, T_T \right) }[/math], полученные от Алисы:
- 6. [math]\displaystyle{ Bob \to \left\{ E_C \left( S_A \left( K, T_A \right) \right), S_T \left( A, K_A, T_T \right), S_T \left( C, K_C, T_T \right) \right\} \to Clara }[/math]
Клара успешно проверяет подпись доверенного центра на сертификате [math]\displaystyle{ S_T \left( A, K_A, T_T \right) }[/math], расшифровывает сессионный ключ [math]\displaystyle{ K }[/math] и проверяет подпись Алисы. В результате Клара уверена, что установила сеанс связи с Алисой, поскольку все необходимые шаги протокола были проделаны верно и все сообщения оказались корректны.
Примечания
- ↑ Давыдов А. Н. Атаки на протоколы установления ключа // Безопасность информационных технологий : Труды научно-технической конференции / под ред. Волчихина В. И., Зефирова С. Л. — Пенза: Изд-во Пензенского научно-исследовательского электротехнического института, 2004. — Декабрь (т. 5). — С. 99—104. Архивировано 19 августа 2019 года.
- ↑ Denning, Sacco, 1981.
- ↑ Мао, 2005, p. 79.
- ↑ 4,0 4,1 Lowe, 1997, The Denning-Sacco shared key protocol, pp. 4—5.
- ↑ Мао, 2005, p. 429.
- ↑ Abadi, Needham, 1996.
Литература
- Dorothy E. Denning, Giovanni Maria Sacco. Timestamps in key distribution protocols (англ.) // Commun. ACM. — New York, NY, USA: ACM, 1981. — Vol. 24, iss. Aug, 1981, no. 8. — P. 533—536. — ISSN 0001-0782. — doi:10.1145/358722.358740.
- Gavin Lowe. A family of attacks upon authentication protocols (англ.). — Department of Mathematics and Computer Science, 1997.
- M. Abadi, R. Needham. Prudent Engineering Practice for Cryptographic Protocols (англ.) // IEEE Transactions on software engineering. — 1996. — January (vol. 22, no. 1).
- Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — 816 с. — 3000 экз. — ISBN 5-89392-055-4.
- Венбо Мао. Современная криптография: теория и практика = Modern Cryptography: Theory and Practice. — Издательский дом "Вильямс", 2005. — ISBN 5-8459-0847-7.